package net.cyndeline.entitySystem

/**
 * Priority levels assigned to systems that handle events.
 * Highest priority gets the event first.
 */
object EventPriority {
  
  /* Systems that throw errors on invalid data */
  val PRIORITY_CRITICAL = 200
  
  /* Systems that modify or cancel events, even as a part of game play. */
  val PRIORITY_ESSENTIAL = 175
  
  /* Systems that only modifies events before they're processed. */
  val PRIORITY_HIGH = 150
  
  /* Processing systems. No events should be canceled from this point and on,
   * since the event is considered to have been applied to the game state. 
   */
  val PRIORITY_NORMAL = 100
  
  /* Systems that react to events that were successfully processed.
   * Should not cancel events.
   */
  val PRIORITY_LOW = 50
  
  /* Systems with logic that should operate when the game state no longer
   * changes (GUI for example). Should not change the game state or cancel
   * events.
   */
  val PRIORITY_TRIVIAL = 0
}